import pubsub from 'pubsub-js';
import moment from 'moment'
import request from "../../../utils/request";
//获取全局app实例
let appInstance = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isPlay: false,//标识音乐是否播放
    song: {},//音乐详情
    musicId: '',//音乐的标识
    musicLink: '',//当前播放的音乐连接
    currentTime: "00:00",//实时播放时长
    durationTime: "00:00",//总时长
    currentWidth:"0"//实时进度条的长度
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //options接收路由传参 默认是空对象
    //console.log(options);
    //原生小程序传参 url有长度限制,如果传参内容过长会截取
    //let song=JSON.parse(options.song)
    let musicId = options.musicId
    //console.log(musicId);
    this.setData({
      musicId
    })
    this.getSongDetail(musicId)
    //判断当前页面音乐是否在播放
    if (appInstance.globalData.isMusicPlay && appInstance.globalData.musicId === musicId) {
      //音乐在播放 修改当前播放状态
      this.setData({
        isPlay: true
      })
    }
    //监听音乐播放/暂停/停止
    //生成背景音乐的实例
    this.backgroundAudioManager = wx.getBackgroundAudioManager()
    this.backgroundAudioManager.onPlay(() => {
      //console.log('onPlay()');
      //   this.setData({
      //     isPlay:true
      //   })
      //  appInstance.globalData.isMusicPlay = true
      this.changeIsPlayState(true)
      appInstance.globalData.musicId = musicId

    })
    this.backgroundAudioManager.onPause(() => {
      //console.log('onPause()');
      // this.setData({
      //   isPlay:false
      // })
      // appInstance.globalData.isMusicPlay = false
      this.changeIsPlayState(false)

    })
    this.backgroundAudioManager.onStop(() => {
      // console.log('onStop()');
      //  this.setData({
      //   isPlay:false
      // })
      // appInstance.globalData.isMusicPlay = false
      this.changeIsPlayState(false)
    })
    //监听音乐自然播放结束
    this.backgroundAudioManager.onEnded(()=>{
      //自动切换下一首音乐, 并且自动播放
      pubsub.publish('switchType','next')
      this.setData({
        currentTime: "00:00",//实时播放时长
        durationTime: "00:00",//总时长
        currentWidth:"0"//实时进度条的长度
      })

    })
    //监听音乐实时播放的进度
    this.backgroundAudioManager.onTimeUpdate(() => {
      //单位是秒s
     // console.log('总时长', this.backgroundAudioManager.duration);
      //console.log('实时播放时长', this.backgroundAudioManager.currentTime);
      //格式化实时播放时间
      let currentTime = moment(this.backgroundAudioManager.currentTime * 1000).format('mm:ss');
      //实时进度条的长度
      //公式是固定的  实时长度/总长度=实时播放时间/总时间
      let currentWidth=(this.backgroundAudioManager.currentTime/this.backgroundAudioManager.duration)*450;
      //currentTime更新状态
      this.setData({
        currentTime,
        currentWidth
      })
    })
    //订阅recommendSong页面发布的消息 musicId
    pubsub.subscribe('musicId', (msg, musicId) => {
      console.log('来自recommendSong页面发布的消息: ', musicId);
      //获取最新的音乐详情数据
      this.getSongDetail(musicId)
      //自动播放当前音乐
      this.musicControl(true, musicId)
    })

  },
  //封装修改状态的函数
  changeIsPlayState(isPlay) {
    this.setData({
      isPlay
    })
    appInstance.globalData.isMusicPlay = isPlay
  },
  //获取音乐详情
  async getSongDetail(musicId) {
    let result = await request('/song/detail', { ids: musicId })
    let durationTime = moment(result.songs[0].dt).format('mm:ss')
    //console.log(result);
    this.setData({
      song: result.songs[0],
      durationTime
    })
    //动态修改窗口的 标题
    wx.setNavigationBarTitle({
      title: this.data.song.name
    })
  },
  //点击播放或者暂停的回调
  handleMusicPlay() {
    let isPlay = !this.data.isPlay
    //修改状态
    this.setData({
      isPlay
    })
    let { musicId, musicLink } = this.data

    this.musicControl(isPlay, musicId, musicLink)
  },
  //控制音乐的暂停或播放
  async musicControl(isPlay, musicId, musicLink) {

    //console.log(musicLinkData);
    if (isPlay) {
      if (!musicLink) {
        //获取音乐播放地址
        let musicLinkData = await request('/song/url', { id: musicId })
        musicLink = musicLinkData.data[0].url
        //将获取到的音乐连接更新到data中
        this.setData({
          musicLink
        })

      }

      this.backgroundAudioManager.src = musicLink
      this.backgroundAudioManager.title = this.data.song.name
      //修改全局的播放状态
      //appInstance.globalData.isMusicPlay = true
      //appInstance.globalData.musicId = musicId
    } else {//暂停音乐
      this.backgroundAudioManager.pause()
      //修改全局的播放状态
      appInstance.globalData.isMusicPlay = false
      appInstance.globalData.musicId = musicId
    }




    //backgroundAudioManager

  },
  //切换前进一首或后退一首歌曲的回调 用到pubsub
  handleSwitch(event) {
    //获取切换歌曲的类型
    let type = event.currentTarget.id
    //console.log(type);
    //停止当前音乐的播放
    this.backgroundAudioManager.stop()
    //将切换歌曲的类型发送给recommendSong页面
    pubsub.publish('switchType', type)
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})